package com.ruoyi.epidemic.service.impl;

import java.util.ArrayList;
import java.util.List;

import com.ruoyi.common.constant.UserConstants;
import com.ruoyi.common.core.domain.Ztree;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.epidemic.domain.WxCpSysDept;
import com.ruoyi.epidemic.mapper.WxCpSysDeptMapper;
import com.ruoyi.epidemic.service.IWxCpSysDeptService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.common.core.text.Convert;

/**
 * 企业微信部门Service业务层处理
 * 
 * @author ruoyi
 * @date 2022-04-05
 */
@Service
public class WxCpSysDeptServiceImpl implements IWxCpSysDeptService
{
    @Autowired
    private WxCpSysDeptMapper wxCpSysDeptMapper;

    /**
     * 查询企业微信部门
     * 
     * @param deptId 企业微信部门主键
     * @return 企业微信部门
     */
    @Override
    public WxCpSysDept selectWxCpSysDeptByDeptId(Long deptId)
    {
        return wxCpSysDeptMapper.selectWxCpSysDeptByDeptId(deptId);
    }

    /**
     * 查询企业微信部门列表
     * 
     * @param wxCpSysDept 企业微信部门
     * @return 企业微信部门
     */
    @Override
    public List<WxCpSysDept> selectWxCpSysDeptList(WxCpSysDept wxCpSysDept)
    {
        return wxCpSysDeptMapper.selectWxCpSysDeptList(wxCpSysDept);
    }

    /**
     * 新增企业微信部门
     * 
     * @param wxCpSysDept 企业微信部门
     * @return 结果
     */
    @Override
    public int insertWxCpSysDept(WxCpSysDept wxCpSysDept)
    {
        wxCpSysDept.setCreateTime(DateUtils.getNowDate());
        return wxCpSysDeptMapper.insertWxCpSysDept(wxCpSysDept);
    }

    /**
     * 修改企业微信部门
     * 
     * @param wxCpSysDept 企业微信部门
     * @return 结果
     */
    @Override
    public int updateWxCpSysDept(WxCpSysDept wxCpSysDept)
    {
        wxCpSysDept.setUpdateTime(DateUtils.getNowDate());
        return wxCpSysDeptMapper.updateWxCpSysDept(wxCpSysDept);
    }

    /**
     * 批量删除企业微信部门
     * 
     * @param deptIds 需要删除的企业微信部门主键
     * @return 结果
     */
    @Override
    public int deleteWxCpSysDeptByDeptIds(String deptIds)
    {
        return wxCpSysDeptMapper.deleteWxCpSysDeptByDeptIds(Convert.toStrArray(deptIds));
    }

    /**
     * 删除企业微信部门信息
     * 
     * @param deptId 企业微信部门主键
     * @return 结果
     */
    @Override
    public int deleteWxCpSysDeptByDeptId(Long deptId)
    {
        return wxCpSysDeptMapper.deleteWxCpSysDeptByDeptId(deptId);
    }

    /**
     * 查询部门管理树
     *
     * @param dept 部门信息
     * @return 所有部门信息
     */
    @Override
//    @DataScope(deptAlias = "d")
    public List<Ztree> selectDeptTree(WxCpSysDept dept)
    {
        List<WxCpSysDept> deptList = wxCpSysDeptMapper.selectWxCpSysDeptList(dept);
        List<Ztree> ztrees = initZtree(deptList);
        return ztrees;
    }

    /**
     * 对象转部门树
     *
     * @param deptList 部门列表
     * @return 树结构列表
     */
    public List<Ztree> initZtree(List<WxCpSysDept> deptList)
    {
        return initZtree(deptList, null);
    }

    /**
     * 对象转部门树
     *
     * @param deptList 部门列表
     * @param roleDeptList 角色已存在菜单列表
     * @return 树结构列表
     */
    public List<Ztree> initZtree(List<WxCpSysDept> deptList, List<String> roleDeptList)
    {

        List<Ztree> ztrees = new ArrayList<Ztree>();
        boolean isCheck = StringUtils.isNotNull(roleDeptList);
        for (WxCpSysDept dept : deptList)
        {
            /*if (UserConstants.DEPT_NORMAL.equals(dept.getStatus()))
            {*/
                Ztree ztree = new Ztree();
                ztree.setId(dept.getDeptId());
                ztree.setpId(dept.getParentId());
                ztree.setName(dept.getDeptName());
                ztree.setTitle(dept.getDeptName());
                if (isCheck)
                {
                    ztree.setChecked(roleDeptList.contains(dept.getDeptId() + dept.getDeptName()));
                }
                ztrees.add(ztree);
            /*}*/
        }
        return ztrees;
    }
}
